package com.vhly.ddxdecompiler.dexreader.file.dalv.code.reader;


import com.vhly.ddxdecompiler.dexreader.file.dalv.code.DalvInsn;
import com.vhly.ddxdecompiler.dexreader.io.DexInputStream;

import java.io.IOException;


public final class Form22t extends InsnReader {

    public static final InsnReader THE_ONE = new Form22t();

    private Form22t() {
    }

    public void prepair(DalvInsn dalvInsn, int reg) {
        int low = reg & 0x0f;
        int hight = (reg >> 4) & 0x0f;
        dalvInsn.addRegister(low);
        dalvInsn.addRegister(hight);
    }

    public int read(DalvInsn insn, DexInputStream din) throws IOException {
        short c1 = din.readShort();
        insn.addRegister(c1);
        return 1;
    }

    //    public String insnArgString(DalvInsn insn) {
//        RegisterSpecList regs = insn.getRegisters();
//        return (new StringBuilder()).append(regs.get(0).regString()).append(", ").append(regs.get(1).regString()).append(", ").append(branchString(insn)).toString();
//    }
//
//    public String insnCommentString(DalvInsn insn, boolean noteIndices) {
//        return branchComment(insn);
//    }
//
//    public int codeSize() {
//        return 2;
//    }
//
//    public boolean isCompatible(DalvInsn insn) {
//        RegisterSpecList regs = insn.getRegisters();
//        if (!(insn instanceof TargetInsn) || regs.size() != 2 || !unsignedFitsInNibble(regs.get(0).getReg()) || !unsignedFitsInNibble(regs.get(1).getReg())) {
//            return false;
//        } else {
//            TargetInsn ti = (TargetInsn) insn;
//            return ti.hasTargetOffset() ? branchFits(ti) : true;
//        }
//    }
//
//    public boolean branchFits(TargetInsn insn) {
//        int offset = insn.getTargetOffset();
//        return offset != 0 && signedFitsInShort(offset);
//    }
//
//    public InsnFormat nextUp() {
//        return null;
//    }
//
//    public void writeTo(AnnotatedOutput out, DalvInsn insn) {
//        RegisterSpecList regs = insn.getRegisters();
//        int offset = ((TargetInsn) insn).getTargetOffset();
//        write(out, opcodeUnit(insn, makeByte(regs.get(0).getReg(), regs.get(1).getReg())), (short) offset);
//    }

}